package common.model.Entity;

import lombok.Getter;
import lombok.Setter;

/**
 * 商品实体类。
 * <p>
 * 继承自 {@link BaseEntity}，用于表示系统中的商品信息，包括：
 * <ul>
 *   <li>商品名称</li>
 *   <li>价格</li>
 *   <li>库存数量</li>
 *   <li>商品分类</li>
 *   <li>上下架状态</li>
 *   <li>商品图片</li>
 * </ul>
 * </p>
 */
@Getter
@Setter
public class Product extends BaseEntity {

    /**
     * 商品名称
     */
    private String ProductName;

    /**
     * 商品价格
     */
    private double Price;

    /**
     * 库存数量
     */
    private int Stock;

    /**
     * 商品描述
     */
    private String description;

    /**
     * 商品所属分类的 ID
     */
    private long CategoryId;

    /**
     * 商品所属分类的名称
     */
    private String CategoryName;

    /**
     * 商品状态：
     * <ul>
     *   <li>0 - 下架</li>
     *   <li>1 - 上架</li>
     * </ul>
     */
    private int Status;

    /**
     * 商品图片的 URL 地址
     */
    private String ImageUrl;

    /**
     * 无参构造函数，创建一个空的商品对象。
     */
    public Product() {}

    /**
     * 带参构造函数，创建一个商品对象并初始化属性。
     *
     * @param ProductName  商品名称
     * @param ProductPrice 商品价格
     * @param Stock        库存数量
     * @param description  商品描述
     * @param Categoryid   分类 ID
     * @param categoryName 分类名称
     * @param status       商品状态（0=下架，1=上架）
     * @param imageUrl     商品图片 URL
     */
    public Product(String ProductName, double ProductPrice, int Stock, String description,
                   long Categoryid, String categoryName, int status, String imageUrl) {
        this.ProductName = ProductName;
        this.Price = ProductPrice;
        this.Stock = Stock;
        this.description = description;
        this.CategoryId = Categoryid;
        this.CategoryName = categoryName;
        this.Status = status;
        this.ImageUrl = imageUrl;
    }
}
